package com.zl.tby.screen.service;

import com.zl.tby.dto.TbyUavRecordQuery;
import com.zl.tby.screen.vo.mountains.*;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 巡山护林大屏 service
 * @author changpeng
 * @version 1.0
 * @since 2024/8/20 10:33
 */
public interface ITbyMountainsScreenService {
    /**
     * 查询飞行数据
     * @param query：查询条件
     * @return 结果
     */
    TbyMountainsScreenBean flightData(TbyUavRecordQuery query);

    /**
     * 获取飞行任务统计
     * @param query: 查询条件
     * @return 结果
     */
    List<TbyMountainsScreenBean> flightTaskData(TbyUavRecordQuery query);

    /**
     * 获取护林员列表
     * @return 结果
     */
    List<TbyMountainsPerson> personList();

    /**
     * 巡护统计
     * @param startTime：开始时间
     * @param endTime：结束时间
     * @return 结果
     */
    TbyPatrolStatisticBean patrolStatistic(String startTime, String endTime, Long userId);

    /**
     * 巡护统计
     * @param startTime：开始时间
     * @param endTime：结束时间
     * @return 结果
     */
    List<TbyPatrolStatisticBean> patrolStatisticGroupByUserId(String startTime, String endTime);

    /**
     * 上报事件统计
     * @param startTime: 开始时间
     * @param endTime：结束时间
     * @return 结果
     */
    TbyReportEventBean reportEvent(String startTime, String endTime);

    /**
     * 上报事件列表
     * @param eventType: 事件类型
     * @param startTime：开始时间
     * @param endTime： 结束时间
     * @return 结果
     */
    List<TbyReportEventInformation> reportEventList(String eventType, String startTime, String endTime);

    /**
     * 获取上报事件附件id
     * @param eventGuid: 事件与附件的关联标识
     * @return 结果
     */
    List<TbyReportAttachBean> reportFileList(String eventGuid);

    /**
     * 获取巡护轨迹
     * @param startTime：开始时间
     * @param endTime：结束时间
     * @return 轨迹列表
     */
    List<List<Map<String, BigDecimal>>> track(String startTime, String endTime);

    List<Map<String, Object>> trackStr(String startTime, String endTime);

    /**
     * 飞行数据
     * @param deviceId: 设备id
     * @param startTime：开始时间
     * @param endTime: 结束时间
     * @return 结果
     */
    TbyMountainsScreenBean queryBackups(String deviceId, String startTime, String endTime);

    /**
     * 获取实时飞行轨迹
     * @return 飞行轨迹
     */
    Map<Long, TbyUavPointScreenVo> realTrack();
}
